package com.sfac.springboot.listener;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
import java.io.File;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

/**
 * @author jzq
 * @date 2022/8/22 9:53
 */
@SuppressWarnings({"all"})
@WebListener
public class LogListener implements ServletContextListener {

    private static final Logger LOGGER = LoggerFactory.getLogger(LogListener.class);

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        LOGGER.debug("==== init log listener");
        // 获取 /log 日志文件夹，判断是否存在，如果不存在直接返回
        File file = new File("/log");
        if (file == null) {
            return;
        }

        // 获取当前日期字符串
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        String currentDateString = dtf.format(LocalDateTime.now());

        // 获取/log 下日志文件列表，循环判断文件名称是否包含日期字符串，不包含则删除
        File[] files = file.listFiles();
        if (files != null && files.length > 0) {
            for (File temp : files) {
                String name = temp.getName();
                if (!name.contains(currentDateString)) {
                    temp.delete();
                }
            }
        }
    }


    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        LOGGER.debug("==== destroy log listener");
    }

}
